#!/usr/bin/env bash
# simple demonstration of the getopts command

# 每次一调用它时，它一次只处理命令行上检测到的一个参数。处理完所有的参数后，它会退出并返回一个大于0的退出码。这让它非常适合用解析命令行所有参数的循环中。
# getopts optstring varable
# getopts 命令将当前参数保存在命令行中定义的 variable 中

# 有效的字母都会列在 optstring 中，如果选项字母要求有个参数值，就加一个冒号。
# 要去掉错误消息的话，可以在 optstring 之前加一个冒号

# getopts 命令会用到两个环境变量。如果选项需要跟一个参数值，OPTARG 环境变量就会保存这个值。
# OPTIND 环境变量保存了参数列表中 getopts 正在处理的参数位置。这样你就能在处理完选项之后继续处理其他命令行参数了。

#./test19.sh -ab test1 -c
# 解决参数值包含空格问题
#./test19.sh -ab "test1 test2" -c
#./test19.sh -abtest1

echo
while getopts :ab:c opt; do
	case "$opt" in
	a) echo "Found the -a option" ;;
	b) echo "Found the -b option, with value $OPTARG" ;;
	c) echo "Found the -c option" ;;
	*) echo "Unknown option: $opt" ;;
	esac
done
